
package modelos;

/**
 * Establece el modelo de la Grafica de Pie 
 * @author Rafael Carrillo 90465
 */
public class DatosPie {
    private String titulo;
    private Dato[]datos;
    private int numDatos;
    private double total;
    
    /**
     * Establece los datos del modelo de la grafica y normaliza los datos si es necesario
     * @param titulo Titulo de la Grafica
     * @param datos Datos de la Grafica
     * @param normalizado True si los datos vienen como porcentajes, False si no es asi
     */
    public DatosPie(String titulo, Dato[] datos, boolean normalizado) {
        this.titulo = titulo;
        this.datos = datos;
        if(!normalizado)
            normaliza();
        numDatos=datos.length;
    }
    
    /**
     * Devuelve los datos del modelo en un arreglo de tipo Dato
     * @return  Arreglo de Datos
     */
    public Dato[] getDatos() {
        return datos;
    }
    
    /**
     * Establece nuevos datos para el modelo y los normaliza en caso de ser necesario
     * @param datos Datos a reemplazar
     * @param normalizado  True si los datos estan en porcentajes o False si no es asi
     */
    public void setDatos(Dato[] datos,boolean normalizado) {
        this.datos = datos;
        if(!normalizado)
            normaliza();
    }
    
    /**
     * Obtiene el numero de datos del modelo
     * @return  Numero de datos
     */
    public int getNumDatos() {
        return numDatos;
    }
    
    /**
     * Obtiene el titulo de la grafica
     * @return  Titulo de la Grafica
     */
    public String getTitulo() {
        return titulo;
    }
    
    /**
     * Establece el titulo de la grafica
     * @param titulo Titulo de la Grafica
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    
    /**
     * Realiza la suma de todos los datos del modelo
     */
    private void suma(){
        for (int i=0;i<datos.length;i++){
            total+=datos[i].valor;
        }
    }
    
    /**
     * Establece los valores de la grafica a porcentajes
     */
    private void normaliza(){
        suma();
        for(int i=0;i<datos.length;i++){
            //Expresar en Porcentajes
            datos[i].valor=(datos[i].valor/total);
        }
    }
    
}
